package com.attendance.www.hr.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.attendance.www.hr.beans.AttendanceBean;
import com.attendance.www.hr.beans.AttendanceDataBean;
import com.attendance.www.hr.beans.AttendancePageBean;
import com.attendance.www.hr.beans.RequestSelectBean;
import com.attendance.www.hr.entitys.EmployeeSchedul;
import com.attendance.www.hr.entitys.PunchTime;
import com.attendance.www.hr.entitys.SchedulDayKey;

public interface IAttendanceService {

	/**
	 * 获取详细考勤列表数据
	 * 
	 * @param employeeNo
	 * @param employeeId
	 * @param attendanceState
	 * @param attendanceDateStart
	 * @param attendanceDateEnd
	 * @param startNum
	 * @param pageCount
	 * @return
	 */
	public AttendancePageBean getAttendanceList(AttendanceBean attendanceBean, Integer startNum, Integer pageCount,
			Integer employeeId, Boolean type);

	/**
	 * 获取详细考勤应出勤数据
	 * 
	 * @param employeeNo
	 * @param attendanceDateStart
	 * @param attendanceDateEnd
	 * @return
	 */
	public AttendanceDataBean getAttendanceData(AttendanceBean attendanceBean, Integer employeeId);

	/**
	 * 考勤信息导入
	 * 
	 * @param attachmentId
	 * @return
	 */
	public List<String> importAttendance(Integer attachmentId);

	/**
	 * 生成免签人员考勤信息
	 */
	public boolean saveEmployeeIsVisaWaiverAttendance();

	/**
	 * 获取人员考勤数据次数
	 * 
	 * @param emploueeId
	 * @param date
	 * @return
	 */
	public Integer getAttendanceCount(Integer emploeeId, Date date);

	/**
	 * 根据考勤Id来获取当前日期的所有申请
	 * 
	 * @param AttendanceId
	 * @return
	 */
	public List<RequestSelectBean> getAttendanceRight(AttendanceBean attendanceBean);
	
	/**
	 * 根据考勤Id来撤回补签信息
	 * @param attendanceId
	 * @param type
	 * @return
	 */
	public boolean retractAttednance(Integer attendanceId,Integer type) ;
		
	/**
	 * 生成旷工人员考勤信息
	 * @param attendanceDateMap
	 * @param employeeIdList
	 * @param employeeSchedulMap
	 * @param schedulDayKeyMap
	 * @param punchTimeMap
	 */
	public void addNotAttendanceDate(Map<Date, Date> attendanceDateMap,
			List<Integer> employeeIdList,Map<Integer, 
			List<EmployeeSchedul>> employeeSchedulMap,
			Map<Integer, List<SchedulDayKey>> schedulDayKeyMap,
			Map<Integer, PunchTime> punchTimeMap);

	/**
	 * 获取原始打卡时by日期
	 * @param ttendanceBean
	 * @return
	 */
	public AttendanceBean getAttendanceTimeByDate(AttendanceBean attendanceBean);
}
